$ irb
"你說好笑不好笑"[2]
=> "好"
"你說好笑不好笑"[3]
=> "笑"
這樣取值有點辛苦,如果需要的字元是更長且連續的,可以這樣寫:
$ irb
"你說好笑不好笑"[2..3]
=> "好笑"
"你說好笑不好笑"[2...4]
=> "好笑"
"你說好笑不好笑"[-3..-1]
=> "不好笑"
範圍有「二個點」..
跟「三個點」...
這兩種寫法,取到的結果值不同如上例,如果要取的值是倒數的位置,用負數也是可以的。
$ irb
(1..9).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
[*1..9]
=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
不只是數字,字串也可施展範圍技:
$ irb
('a'..'z').to_a
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
如同昨天介紹的 to_a
這裡的 a
就是指 Array
。
在電腦科學中,陣列資料結構(英語:array data structure),簡稱陣列(英語:Array),是由相同類型的元素(element)的集合所組成的資料結構,分配一塊連續的記憶體來儲存。利用元素的索引(index)可以計算出該元素對應的儲存位址。
陣列裡可以放數字、字串、甚至陣列也可以,建立陣列有幾個方法:
Array.new
[]
$ irb
Array.new # 製作一個空陣列
=> []
[].<< 2 # << 也是方法,將元素塞進陣列
=> [2]
Array.new(3, [1, 2, 3]) # 需要3組數字的集合
=> => [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
也可以帶變數進來:
$ irb
Morgan_say = 3000
Array.new(Morgan_say, "I love you") # Morgan說「 我愛你3000次 」
=> ["I love you", "I love you", "I love you",...略]
去頭去尾進入室內請脫帽脫鞋
$ irb
suit = ["hat", "t-shirt", "jeans", "shoes"]
suit.shift # 去掉第一個元素
=> "hat"
suit.pop # 去掉最後一個元素
=> "shoes"
suit
=> ["t-shirt", "jeans"]
如果想對範圍或陣列裡的元素一次性的操作,例如:把範圍內的元素變成兩倍,並且用 array 呈現:
$ irb
array = []
(1..3).each {|number| array << number * 2}
array
=> [2, 4, 6]
明天見~
此文同步刊登於CJ-Han的網站